package com.mcb_wxc.util;

import com.baidu.aip.speech.AipSpeech;
import com.baidu.aip.speech.TtsResponse;
import com.baidu.aip.util.Util;
import org.json.JSONObject;

import java.io.IOException;

/**
 * Created by 小生
 * 2019/2/23 9:31.
 * 语音类
 */
public class Sample {
    //设置APPID/AK/SK
    public static final String APP_ID = "15612394";
    public static final String API_KEY = "zbGpYFaEqZnK2Yyu4wPWXDqA";
    public static final String SECRET_KEY = "bqeGgQGCeNjqnWuF6vC3Ez1pUGGXGMY2";

    /**
     * 语音文件转文字
     * @param filePath 如：E:\gitData\sellingCars\xfj_wxc\testFile\16k.pcm
     */
    public static void phoneticTranscription(String filePath) {
        // 初始化一个AipSpeech
        AipSpeech  client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);


        // 可选：设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);

        // 可选：设置代理服务器地址, http和socket二选一，或者均不设置
        //client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
        //client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理

        // 可选：设置log4j日志输出格式，若不设置，则使用默认配置
        // 也可以直接通过jvm启动参数设置此环境变量
        System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");

        // 调用接口
        JSONObject res = client.asr(filePath, filePath.substring(filePath.indexOf(".") + 1, filePath.length()), 16000, null);
        System.out.println(res.toString(2));
    }

    /**
     * 文字转mp3语音文件
     * @param text 文本内容 "如"：穷也就算了，还老了
     */
    public static void textToVoice(String text) {
        // 初始化一个AipSpeech
        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);

        // 可选：设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);

        // 可选：设置代理服务器地址, http和socket二选一，或者均不设置
        //client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
        //client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理

        // 可选：设置log4j日志输出格式，若不设置，则使用默认配置
        // 也可以直接通过jvm启动参数设置此环境变量
        System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");

        // 调用接口
        TtsResponse res = client.synthesis(text, "zh", 1, null);
        byte[] data = res.getData();
        JSONObject res1 = res.getResult();
        if (data != null) {
            try {
                Util.writeBytesToFileSystem(data, "output.mp3");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (res1 != null) {
            System.out.println(res1.toString(2));
        }
    }


    public static void main(String[] args) {
        textToVoice("对于20岁出头，刚刚走出校园的年轻人，或许还未有这样深刻的体验，但对于已经爬上三十大关的人，这句话实在饱含着太多不可言喻的艰辛与苦涩。\n" +
                "\n" +
                "对于普通人来说，人生最重要的事情就是脱贫。我们没有强大的父辈做后盾、没有惊为天人的天赋、没有羡煞旁人的幸运等。财富的积累，只能靠自己的辛劳与汗水，使得脱贫之路显得异常艰难。\n" +
                "\n" +
                "当每个月微薄的收入，扣除房租、伙食费、电话费、应酬费等，留在手里的钱几乎所剩无几，更别说去追求更高端的生活，连存下些积蓄都难。人一旦越过25岁大关，就面临买房、买车、结婚、生娃的艰难选择，想实现其中任何一个目标，都得使出洪荒之力。有人靠自己几年的积蓄再贴上父母的帮助，终于付清了房子的首付，却使得自己与父母都变得一贫如洗，还得每月偿还房屋贷款，可谓压力山大。如果想让出行变得便利，还得买车还车贷。等到28岁左右，就得把婚姻安排上日程，婚礼花销也是一笔不小的数目。再过一两年，孩子出身，就得考虑如何把孩子养大。如果此时此刻，你的工资与存款，达不到一定的数目，就得变相啃老，对于“有老可啃”的人来说还好，对于“无老可啃”的人，只能走向佛系，看淡一切。\n" +
                "\n" +
                "曾经年少的我们，都觉得自己在将来一定可以干出一番大事业，但是真正步入社会后，才发现举步维艰。这种压力，随着年岁的增长变得越来越大，渐渐地吞噬你的快乐，让你变得深沉，这或许就是人们常说的成熟吧。\n" +
                "\n" +
                "在脱贫这条路上，每个人走得都异常艰难，没有谁可以不付出努力，就可以坐享其成。每一个成功人士的背后，都有一段励志的奋斗史。如果你承受不了那样的痛苦，就别幻想那样的成功。面对别人的成功，对于不成功的自己，总会心生嫉妒，如果嫉妒就能让自己变得成功，那就继续嫉妒吧。与其羡慕嫉妒，不如好好地耕耘自己的一亩三分地，如果直到最后也不能享受大成功，至少能实在自己能达到的小成功，这也是一种幸福。\n" +
                "\n" +
                "每个人的能力不同，每个人的出发点也不同。如果够不到树上红彤彤的苹果，那么俯身摘取脚下的草莓，也是一种成功，也是一种幸福。\n" +
                "\n" +
                "虽然现在又穷又老，但是我们也有属于我们的小幸福。虽然我们不能一蹴而就地拥有所有，但我们可以一点点地去奋斗，去获得一个个米粒大的小成功，这些小成功积累起来，也能温暖我们艰辛而平凡的一生。");
    }

}
